package com.haha.helloworld.fragment;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import com.haha.helloworld.R;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;

public class AFragment extends Fragment {
    private TextView tv_title;
    private Button btn_change;
    private Button btn_reset;
    private BFragment bFragment;
    private Button btn_message;
    //声明接口
    private IOnMessageClick iOnMessageClick;

    //
    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);
        //这里的context其实就是ContainerActivity，强转为接口
        iOnMessageClick= (IOnMessageClick) context;
    }

    //用于创建视图
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //创建一个view使得我们可以在下方的onViewCreated方法中通过view，在通过id找到组件
        View view = inflater.inflate(R.layout.fragment_a,container,false);
        return view;
    }
    //创建视图后执行
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //通过之前的指定的view就可以找到我们的组件了
        tv_title= (TextView)view.findViewById(R.id.tv_title);
        btn_change=(Button) view.findViewById(R.id.btn_change);
        btn_reset=(Button) view.findViewById(R.id.btn_reset);
        btn_message=(Button) view.findViewById(R.id.btn_message);

        btn_message.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                ((ContainerActivity) getActivity()).setData("Fragment调用ContainerActivity的消息");
                //接口调用
                iOnMessageClick.onClick("Fragment调用ContainerActivity的消息");
            }
        });

        btn_change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (bFragment==null) {
                    bFragment = new BFragment();
                }
                    //把aFragment添加到ContainerActivity中的fl_container中,记得commit一下
                    //其实也就是把自己定义的Fragment页面，放到其他页面中的FragmentLayout中去
                    //addToBackStack添加回退栈，将bFragment加入到回退栈，可以使得按返回键返回上一级
//                    getFragmentManager().beginTransaction().replace(R.id.fl_container, bFragment).addToBackStack(null).commit();

                //获得tag名为a的fragment
                Fragment fragment = getFragmentManager().findFragmentByTag("a");
                if (fragment!=null){
                    //这里直接是hide原afragment，添加一个bFragment
                    getFragmentManager().beginTransaction().hide(fragment).add(R.id.fl_container, bFragment).addToBackStack(null).commit();
                }else {
                    //这里使用的是replace会导致视图数据重新生成，相当于先remove，再add
                    getFragmentManager().beginTransaction().replace(R.id.fl_container, bFragment).addToBackStack(null).commit();
                }
            }
        });

        btn_reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tv_title.setText("我是新文字");
            }
        });
        //然后可以执行后续操作，这里不再演示
        //........
    }

    //写一个回调接口，让ContainerActivity去实现，
    public interface IOnMessageClick{
        void onClick(String text);
    }
}
